<?php
class ItsAdminsController extends AppController {
    var $name = 'ItsAdmins';

    var $uses = array('User', 'Customer', 'Site');

    var $pageTitle = 'ITS Administrator';

    var $viewPath = 'its/admins';

    function beforeFilter() {
        parent::beforeFilter();
        // ใช้ใน Navigator element ระบุ controller ที่กำลังถูกเลือก
        $this->set('parentNav', 'its_admins');
        $this->set('tabMenu', 'tabmenus/its/admins');
    }

    function display() {

    }

    /**
     * สำหรับ ITS Head user ที่จะเข้าไปดูข้อมูล customer โดยจะแปลงตัวเองเป็น Customer Site user
     * @param int $site_id site id
     * @param int $customer_id customer id
     */
    function view_as_site_user($site_id, $customer_id) {
        $this->Customer->contain();
        $customer = $this->Customer->findById($customer_id);

        // เปลี่ยน ITS user เป็น customer head office user
        $this->Session->write('Auth.User.prefix', CUST_PREFIX);
        $this->Session->write('Auth.User.customer_id', $customer_id);
        $this->Session->write('Auth.User.site_id', $site_id);
        $this->Session->write('Auth.User.is_head_user', false);
        $this->Session->write('Auth.User.can_view_other_site', $customer['Customer']['can_view_other_site']);
        $this->Session->write('Auth.User.can_add_location', true);
        $this->Session->write('Auth.User.cust_report', $this->Auth->user('its_report'));   // เห็นแถบ report ของ customer ได้
        $this->Session->write('Auth.User.can_reserve_stock_out', true);
        $this->Session->write('Auth.User.Extend.from_its_user', true);
        $this->redirect('/users/home');
    }

    /**
     * สำหรับ ITS Head user ที่จะเข้าไปดูข้อมูล customer โดยจะแปลงตัวเองเป็น Customer Head office user
     * @param <type> $id customer id
     */
    function view_as_customer_user($customer_id) {
        // เปลี่ยน ITS user เป็น customer head office user
        $this->Session->write('Auth.User.prefix', CUST_PREFIX);
        $this->Session->write('Auth.User.customer_id', $customer_id);
        $site = $this->Site->findByCustomerId($customer_id);
        $this->Session->write('Auth.User.site_id', $site['Site']['id']);    // site เริ่มต้นให้เป็น site แรกของ customer
        $this->Session->write('Auth.User.can_add_location', true);
        $this->Session->write('Auth.User.is_head_user', true);
        $this->Session->write('Auth.User.cust_report', $this->Auth->user('its_report'));   // เห็นแถบ report ของ customer ได้
        $this->Session->write('Auth.User.can_reserve_stock_out', true);
        $this->Session->write('Auth.User.Extend.from_its_user', true);  // Extend เป็น Attribute เทียม สำหรับ field ที่เก็บเพิ่มไม่มีในตาราง User
        $this->redirect('/users/home');
    }

    /**
     * สำหรับ ITS Head user ที่จะเข้าไปดูข้อมูล Supplier
     * @param int $id supplier id
     */
    function view_as_supplier_user($supplier_id) {
        // เปลี่ยน ITS user เป็น customer head office user
        $this->Session->write('Auth.User.prefix', SUPPLIER_PREFIX);
        $this->Session->write('Auth.User.supplier_id', $supplier_id);
        $this->Session->write('Auth.User.supplier_report', $this->Auth->user('its_report'));   // เห็นแถบ report ของ customer ได้
        $this->Session->write('Auth.User.Extend.from_its_user', true);  // Extend เป็น Attribute เทียม สำหรับ field ที่เก็บเพิ่มไม่มีในตาราง User

        // ลบ Session customer_id ที่ดูล่าสุดในหน้า ITS Product Inventory (กันแสดงข้อมูลลูกค้าอื่นในหน้า Vendor Inventory list)
        $this->Session->del("ItsCustProducts.customer_id");
        $this->redirect('/users/home');
    }

    /**
     * ดูเป็น Customer เสร็จแล้วกลับมาเป็น ITS
     */
    function cust_back_to_its() {
        $customer_id = $this->Auth->User('customer_id');
        // เปลี่ยน ITS user เป็น customer head office user
        $this->Session->write('Auth.User.prefix', ITS_PREFIX);
        $this->Session->delete('Auth.User.customer_id');
        $this->Session->delete('Auth.User.site_id');
        $this->Session->delete('Auth.User.is_head_user');
        $this->Session->delete('Auth.User.can_add_location');
        $this->Session->delete('Auth.User.cust_report');
        $this->Session->delete('Auth.User.Extend');

        $auth = $this->Session->read('Auth');
        // ลบ Session อื่น ๆ ทั้งหมด มีผลกับการ paging
        $this->Session->destroy();
        // นำ User กลับเข้า session
        $this->Session->write('Auth', $auth);


        $this->redirect('/its_customers/view/' . $customer_id);
    }
    /**
     * ดูเป็น Supplierเสร็จแล้วกลับมาเป็น ITS
     */
    function supplier_back_to_its() {
        $supplier_id = $this->Auth->User('supplier_id');
        // เปลี่ยน ITS user เป็น customer head office user
        $this->Session->write('Auth.User.prefix', ITS_PREFIX);
        $this->Session->delete('Auth.User.supplier_id');
        $this->Session->delete('Auth.User.supplier_report');
        $this->Session->delete('Auth.User.Extend');

        $auth = $this->Session->read('Auth');
        // ลบ Session อื่น ๆ ทั้งหมด มีผลกับการ paging
        $this->Session->destroy();
        // นำ User กลับเข้า session
        $this->Session->write('Auth', $auth);
        
        $this->redirect('/suppliers/view/' . $supplier_id);
    }
}
?>